home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK2.toast / Development Kits (Disc 2) / QuickTime / Programming Stuff / Documentation / develop articles / develop Issue 13 / Inside QuickTime and Components / Debugger Extensions / Tools / MPW Scripts / MakeUserArea < prev   
Encoding:
Text File  |  1997-02-26  |  8.7 KB  |  269 lines  |  [TEXT/MPS ]

  1. #    Syntax:    makeuserarea cheaderfile [cheaderfile]
  2. Set TMONFolder ""                             # The directory location of the TMON Application
  3. Set CHeaderFile ""                             # Default header file
  4. Set UserAreaName "New Angus User Area"        # Default User Area Name
  5.  
  6. ########################################
  7. # Locate the C Header File             ####
  8. ########################################
  9. If "{#}" < 1
  10.     Set CHeaderFile "`GetFileName -m "Choose a C header (.h) file" "{CIncludes}"`" 
  11.     If "{CHeaderFile}" == ""
  12.         Echo "### Usage: {0} did not find a C header file. Can not continue"
  13.         Exit 1
  14.     Else
  15.         Set ∂# 1
  16.         Set ∂"parameters∂"  {CHeaderFile}
  17.     End    
  18. end
  19.  
  20. ###########################################
  21. # Locate the TMON Application directory ###
  22. ##########################################
  23.     if !(`exists -w "{SystemFolder}Extensions:TMON Folder:TMON"`)
  24.         Set TMONFolder "`GetFileName -d -q -m "Find TMON Folder Directory"  "{SystemFolder}Extensions:"`" 
  25.         #    If Cancel button was chosen, could not find TMON Application.
  26.         If !(`exists -w "{TMONFolder}TMON"`)
  27.             Echo "### {0}: TMON Application not found"
  28.             Exit 1
  29.         End    
  30.     else
  31.         Set TMONFolder "{SystemFolder}Extensions:TMON Folder:"
  32.     end
  33. ########################################
  34. # End locating of TMON App             ####
  35. ########################################
  36.  
  37.  
  38.  
  39. ########################################
  40. # Create User Area Template Creation ###
  41. ########################################
  42. new derezUserArea
  43. set rezFile derezUserArea
  44. if (`exists  "{RIncludes}TmonTypes.r"`)
  45.     echo    "#include ∂"TmonTypes.r∂"" >> {rezFile}
  46.     echo     "resource 'RTy#' (256) ∂{" >> {rezFile}
  47.     echo    "    ∂{    /* array TypeArray: 1 elements */" >> {rezFile}
  48.     echo    "        /* [1] */"         >> {rezFile}
  49.     echo    "        'Asm ',"         >> {rezFile}
  50.     echo    "        procAll,"         >> {rezFile}
  51.     echo    "        fpuAll,"         >> {rezFile}
  52.     echo    "        mmuAll,"         >> {rezFile}
  53.     echo    "        worldAll,"         >> {rezFile}
  54.     echo    "        sysAll,"         >> {rezFile}
  55.     echo    "        qdAll,"         >> {rezFile}
  56.     echo    "        vmAll,"         >> {rezFile}
  57.     echo    "        slotAll,"         >> {rezFile}
  58.     echo    "        nonrelocatable," >> {rezFile}
  59.     echo    "        immutable,"     >> {rezFile}
  60.     echo    "        optional,"         >> {rezFile}
  61.     echo    "        ∂{    /* array IDArray: 1 elements */" >> {rezFile}
  62.     echo    "            /* [1] */"     >> {rezFile}
  63.     echo    "            256, 256"     >> {rezFile}
  64.     echo    "        ∂}"             >> {rezFile}
  65.     echo    "    ∂}"                 >> {rezFile}
  66.     echo    "∂};"                     >> {rezFile}
  67.     echo    ""                         >> {rezFile}
  68.     echo    "resource 'TMPL' (267, ∂"Asm ∂", purgeable) ∂{" >> {rezFile}
  69.     echo    "    ∂{    /* array ItemArray: 6 elements */" >> {rezFile}
  70.     echo    "        /* [1] */"             >> {rezFile}
  71.     echo    "        ∂"NumMacros∂","         >> {rezFile}
  72.     echo    "        'OCNT',"             >> {rezFile}
  73.     echo    "        /* [2] */"             >> {rezFile}
  74.     echo    "        ∂"*****∂","             >> {rezFile}
  75.     echo    "        'LSTC',"             >> {rezFile}
  76.     echo    "        /* [3] */"             >> {rezFile}
  77.     echo    "        ∂"Flags∂","             >> {rezFile}
  78.     echo    "        'HBYT',"             >> {rezFile}
  79.     echo    "        /* [4] */"             >> {rezFile}
  80.     echo    "        ∂"Data∂","             >> {rezFile}
  81.     echo    "        'PSTR',"             >> {rezFile}
  82.     echo    "        /* [5] */"             >> {rezFile}
  83.     echo    "        ∂"Name∂","             >> {rezFile}
  84.     echo    "        'ECST',"             >> {rezFile}
  85.     echo    "        /* [6] */"             >> {rezFile}
  86.     echo    "        ∂"*****∂","             >> {rezFile}
  87.     echo    "        'LSTE'"             >> {rezFile}
  88.     echo    "    ∂}"                     >> {rezFile}
  89.     echo    "∂};"                         >> {rezFile}
  90.     echo    ""                             >> {rezFile}
  91.     echo    "data 'UsrF' (256) ∂{"         >> {rezFile}
  92.     echo    "    $∂"000F 007F 0000 0000∂"" >> {rezFile}
  93.     echo    "∂};"                         >> {rezFile}
  94. else
  95.     echo    "data 'RTy#' (256) ∂{"                                     >> {rezFile}
  96.     echo    "    $∂"0001 4173 6D20 FFFF FFFF FFFF 0002 0001∂"  "         >> {rezFile} 
  97.     echo    "    $∂"0100 0100∂"                                 "     >> {rezFile}
  98.     echo    "∂};"                                                     >> {rezFile}
  99.  
  100.     echo    "data 'UsrF' (256) ∂{" >> {rezFile}
  101.     echo    "    $∂"000F 007F 0000 0000∂"     " >> {rezFile}
  102.     echo    "∂};" >> {rezFile}
  103. end
  104. rez derezUserArea -o "{UserAreaName}" -t 'User' -c 'Tmon'
  105. close -n derezUserArea
  106.  
  107. if !(`exists -w "{UserAreaName}"`)
  108.     Echo "### {0}: No User Area Template"
  109.     Exit 1
  110. end
  111.  
  112. #####################################
  113. # End User Area Template Creation ###
  114. #####################################
  115.  
  116.  
  117. #####################################
  118. ###  Create all the temporary files
  119. #####################################
  120. if !(`exists  "AsmResources"`)
  121.     new AsmResources
  122. end
  123. if !(`exists  "AliasData"`)
  124.     new AliasData
  125. end
  126. if !(`exists  "PostCHeaderFile"`)
  127.     new PostCHeaderFile
  128. end
  129. if !(`exists -w "tmpAliasData"`)
  130.     new tmpAliasData
  131. end
  132. if !(`exists  "tmpAsmResources"`)
  133.     new tmpAsmResources
  134. end
  135.  
  136.  
  137. ############################################
  138. # Clear out the AsmResources file
  139. ############################################
  140. target AsmResources
  141. find •:∞
  142. cut §            # get rid of old stuff
  143. ############################################
  144. # Write out the #includes for AsmResources file
  145. ############################################
  146. find •
  147. echo "#include ∂"Macsbug.r∂"" >> AsmResources
  148. echo "#include ∂"TMONTypes.r∂"" >> AsmResources
  149.  
  150. ############################################
  151. # derez TMON Pro 'Asm ' resource only once
  152. ############################################
  153. derez "{TMONFolder}TMON" -only 'Asm ' {RIncludes}TMONTypes.r >> "AsmResources"
  154.  
  155. ############################################
  156. ##### Clear AliasData file  #######
  157. ############################################
  158. target "AliasData"    
  159. find •:∞
  160. clear §            # get rid of old stuff
  161.  
  162.  
  163. ##################################################################
  164. # For each .h file, add the Asm resources and alias data          ###
  165. ###################################################################
  166. For item in {"parameters"}
  167.     ############################################
  168.     # Make sure each parameter is a valid file or directory.  If an invalid file or directory was given,
  169.     #    write an error message and continue processing parameters.
  170.     ############################################
  171.     If !"`Exists "{item}"`"
  172.         Echo "### {1}: {item} not a valid file or directory name."  
  173.         Continue
  174.     End >> Dev:StdErr
  175.     
  176.     ############################################
  177.     # Get rid of the global glue for such files as GX
  178.     ############################################
  179.     c -e "{item}" > "PostCHeaderFile" 
  180.     
  181.     ############################################
  182.     # Need to cut out all extra #include files here
  183.     # My current algorithm goes to the bottom of the file
  184.     # and then selects everything from there to the first LINE statement above
  185.     ############################################
  186.     target "PostCHeaderFile"
  187.     find ∞                # Find bottom of file
  188.     find \#line\:∞        # Select from bottom of file to last LINE command
  189.     cut §                # Cut the part we want
  190.     find •:∞            # Select all of the file
  191.     paste §                # Paste the part we cut above
  192.  
  193.     ############################################
  194.     # Now, generate the 'Asm ' resource rez file        
  195.     ############################################
  196.     debugit -i "PostCHeaderFile" -o tmpAsmResources -tmon
  197.         
  198.     ############################################
  199.     # Now, generate the alias data file        
  200.     ############################################
  201.     debugit -i PostCHeaderFile -o tmpAliasData -alias
  202.     
  203.     ############################################
  204.     # Select all of the tmpAliasData
  205.     ############################################
  206.     target "tmpAliasData"    
  207.     find •:∞
  208.     cut §
  209.     ############################################
  210.     # Append all of tmpAliasData to permanent AliasData
  211.     ############################################
  212.     target "AliasData"    
  213.     find ∞
  214.     paste §
  215.  
  216.     ############################################
  217.     # Add comma and newline to end of permanent AsmResources
  218.     ############################################
  219.     target "AsmResources"
  220.     find •                # get to top of file
  221.     find /∂,∂n/            # get a comma and a new line
  222.     copy §                # get to clipboard
  223.     find /∂n∂t}∂n}/¡0    # Get before last two brackets
  224.     paste §                # paste a comma and a new line
  225.  
  226.     ############################################
  227.     # Select all of the tmpAsmResources
  228.     ############################################
  229.     target "tmpAsmResources"    
  230.     find •:∞
  231.     cut §
  232.     ############################################
  233.     # Paste in the tmpAsmResources into permanent AsmResources
  234.     ############################################
  235.     target "AsmResources"
  236.     paste §
  237. end
  238.  
  239. #########################################
  240. # End of For Loop  #########
  241. ########################################
  242.  
  243. ########################################
  244. # cleanup all the temporary files
  245. ########################################
  246. close "tmpAsmResources" -n    # close without saving
  247. close "tmpAliasData" -n
  248. close "PostCHeaderFile" -n    # close without saving
  249.  
  250. #########################################
  251. # Make the resource fork of user area  #########
  252. ########################################
  253. rez AsmResources -a -rd -o "{UserAreaName}" {RIncludes}TMONTypes.r
  254. close "AsmResources" -n
  255.  
  256. #########################################
  257. # Make the data fork of user area  #########
  258. ########################################
  259. duplicate -d AliasData "{UserAreaName}" -y
  260. close "AliasData" -n
  261.  
  262. #########################################
  263. # User Area Complete: Copy over to destination  #########
  264. ########################################
  265. duplicate "{UserAreaName}"  "{TMONFolder}" -y
  266.  
  267.  
  268. echo {UserAreaName} "Created: Job Done!"
  269.